Merge pull request #464 from knu/heroku_button

Add a "Deploy to Heroku" button.

Akinori MUSHA 10 gadi atpakaļ
vecāks
revīzija
3afd215457

+ 2 - 0
README.md

@@ -71,6 +71,8 @@ If you need more detailed instructions, see the [Novice setup guide][novice-setu
71 71
 
72 72
 ## Deployment
73 73
 
74
+[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)
75
+
74 76
 Huginn can run on Heroku for free!  Please see [the Huginn Wiki](https://github.com/cantino/huginn/wiki#deploying-huginn) for detailed deployment strategies for different providers.
75 77
 
76 78
 ### Optional Setup

+ 23 - 0
app.json

@@ -0,0 +1,23 @@
1
+{
2
+    "name": "Huginn",
3
+    "description": "Build agents that monitor and act on your behalf.  Your agents are standing by!",
4
+    "website": "https://github.com/cantino/huginn",
5
+    "repository": "https://github.com/cantino/huginn",
6
+    "env": {
7
+        "BUILDPACK_URL": "https://github.com/ddollar/heroku-buildpack-multi.git",
8
+        "APP_SECRET_TOKEN": {
9
+            "generator": "secret"
10
+        },
11
+        "PROCFILE_PATH": "deployment/heroku/Procfile.heroku",
12
+        "ON_HEROKU": "true",
13
+        "FORCE_SSL": "true",
14
+        "INVITATION_CODE": {
15
+            "generator": "secret"
16
+        },
17
+        "USE_GRAPHVIZ_DOT": "dot"
18
+    },
19
+    "scripts": {
20
+      "postdeploy": "bundle exec rake db:migrate"
21
+    },
22
+    "success_url": "/users/sign_up"
23
+}

+ 31 - 0
app/assets/stylesheets/application.css.scss.erb

@@ -117,6 +117,37 @@ span.not-applicable:after {
117 117
   }
118 118
 }
119 119
 
120
+// Heroku
121
+
122
+.heroku-instructions {
123
+  color: rgba(255, 255, 255, 0.9);
124
+  background-color: rgba(132, 132, 196, 0.8);
125
+  border: 3px solid rgba(132, 132, 196, 0.5);
126
+  -webkit-border-radius: 4px;
127
+     -moz-border-radius: 4px;
128
+          border-radius: 4px;
129
+  padding: 12px;
130
+  margin-bottom: 10px;
131
+
132
+  a {
133
+    text-decoration: underline;
134
+  }
135
+
136
+  a:link {
137
+    color: inherit;
138
+  }
139
+
140
+  a:hover, a:visited, a:active {
141
+    color: #fff;
142
+  }
143
+
144
+  pre {
145
+    background-color: #ffffff;
146
+    color: #3F3F44;
147
+    margin: 4px;
148
+  }
149
+}
150
+
120 151
 // Logs
121 152
 
122 153
 #logs .action-icon {

+ 22 - 0
app/views/devise/registrations/new.html.erb

@@ -7,6 +7,28 @@
7 7
 
8 8
         <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => 'form-horizontal' }) do |f| %>
9 9
           <%= devise_error_messages! %>
10
+          <% if ENV['ON_HEROKU'] && User.count.zero? %>
11
+          <div class="heroku-instructions">
12
+            <% app_name = request.host[/\A[^.]+/] %>
13
+            <p>If you are the owner of this application, take the following steps to complete the setup:</p>
14
+
15
+            <ul>
16
+              <li>Read <a href="https://github.com/cantino/huginn/wiki/Run-Huginn-for-free-on-Heroku" target="_target">this document</a> carefully if you are going to try out Huginn for free on <a href="https://id.heroku.com/" target="_target">Heroku</a>.</li>
17
+
18
+              <li>Install the <a href="https://toolbelt.heroku.com/" target="_target">Heroku Toolbelt</a> and run <kbd>heroku login</kbd> if you haven't already.</li>
19
+
20
+              <li>Run the following commands:<br />
21
+                <%= content_tag :pre do -%>
22
+heroku git:clone <%= content_tag :var, app_name %>
23
+cd <%= content_tag :var, app_name %>
24
+bundle
25
+bin/setup_heroku
26
+<%- end %>
27
+
28
+              <li>Get back to this page and sign up with the invitation code shown by the last command.</li>
29
+            </ul>
30
+          </div>
31
+          <% end %>
10 32
 
11 33
           <div class="form-group">
12 34
             <%= f.label :invitation_code, :class => 'col-md-4 control-label' %>

+ 20 - 2
bin/setup_heroku

@@ -48,6 +48,7 @@ def set_value(key, value, options = {})
48 48
   if $config[key].nil? || $config[key] == '' || ($config[key] != value && options[:force] != false)
49 49
     puts "Setting #{key} to #{value}" unless options[:silent]
50 50
     puts capture("heroku config:set #{key}=#{value}")
51
+    $config[key] = value
51 52
   end
52 53
 end
53 54
 
@@ -94,11 +95,15 @@ unless $config['APP_SECRET_TOKEN']
94 95
   puts capture("heroku config:set APP_SECRET_TOKEN=`rake secret`")
95 96
 end
96 97
 
98
+unless $config['DOMAIN']
99
+  set_value 'DOMAIN', "#{app_name}.herokuapp.com", force: false
100
+  first_time = true
101
+end
102
+
97 103
 set_value 'BUILDPACK_URL', "https://github.com/ddollar/heroku-buildpack-multi.git"
98 104
 set_value 'PROCFILE_PATH', "deployment/heroku/Procfile.heroku", force: false
99 105
 set_value 'ON_HEROKU', "true"
100 106
 set_value 'FORCE_SSL', "true"
101
-set_value 'DOMAIN', "#{app_name}.herokuapp.com", force: false
102 107
 set_value 'USE_GRAPHVIZ_DOT', 'dot'
103 108
 
104 109
 unless $config['INVITATION_CODE']
@@ -133,6 +138,19 @@ unless $config['SMTP_DOMAIN'] && $config['SMTP_USER_NAME'] && $config['SMTP_PASS
133 138
   end
134 139
 end
135 140
 
141
+if first_time
142
+  puts "Restarting..."
143
+  puts capture("heroku restart")
144
+
145
+  puts "Done!"
146
+  puts
147
+  puts "Visit https://#{app_name}.herokuapp.com/users/sign_up and use the invitation code shown below:"
148
+  puts
149
+  puts "\t#{$config['INVITATION_CODE']}"
150
+
151
+  exit
152
+end
153
+
136 154
 branch = capture("git rev-parse --abbrev-ref HEAD")
137 155
 if yes?("Should I push your current branch (#{branch}) to heroku?")
138 156
   puts "This may take a moment..."
@@ -158,4 +176,4 @@ if yes?("Should I push your current branch (#{branch}) to heroku?")
158 176
 end
159 177
 
160 178
 puts
161
-puts "Done!"
179
+puts "Done!"